Copyback is an operation used to read and copy data stored in one page (a source page) and reprogram it in another page (a destination page) in a flash memory. Unlike standard read and program operations, data retrieved from the source page is not streamed out (such as streamed out of the flash memory chip), but is saved in an internal buffer in the flash memory and then programmed directly into the destination page without using an external memory. In this way, the data is kept entirely within the flash memory chip and not sent to any external chip within the flash memory (such as to an external controller in the flash memory). Thus, the copyback operation is faster and more efficient than standard operations because reading out the data and then re-loading the data to be programmed are not required. The operation is particularly useful when a portion of a page is updated and the rest of the page needs to be copied to a newly assigned block.
Copyback operations are “blind” in that the data is moved without being checked. In particular, as the data read from the source page is internal to the flash memory during a copyback operation, the Error Correction Code (ECC) cannot be evaluated before copying the source page to the destination page. As a result, any bit error (either caused by the copyback read operation or other error) cannot be detected and will be copied into the destination page, resulting in propagation and accumulation of the bit error.